package javaClassExercise;

/**
 * Created by lomo on 2017/3/11.
 *
 * 测试用构造器创建类和变量的初始化顺序
 * 类和对象
 * 类的初始化过程顺序问题：
 * 类变量、方法的初始化
 * 静态变量、方法的初始化
 *
 */

public class Person {

    protected static String t = "lomo";

//    Lomo lomo = new Lomo("LOMO");

    //构造器、构造函数
    public Person(int id) {
        System.out.println("Person: " + id);
        //Lomo lomo = new Lomo("LOMO");
    }

    /**
     * static 静态代码块
     */
    static {
        System.out.println("这是Person类中的static静态代码块！");
    }

    /**
     * 非静态块
     */
    {
        System.out.println("这是Person类中的非静态代码块！");
    }

    public static void main(String[] args) {

        Build b = new Build();
        System.out.println("第二次new Build 类!");
        Build b2 = new Build();
        //输出：
        // Person: 1
        // Person: 3
        // 这是Build类！
        // Person: 2
    }
}

/**
 * 一个.java文件中可以有多个类，但是至多只能有一个public的类，一般情况，该类里放置main方法，作为程序入口!
 * (可以没有！若没有，则.java文件名可以是任何一个类的名)
 * 这个.java文件的名字必须和这个public的类名一致！！！
 * 使用javac编译时.java文件时，会为每个.java文件生成对应的.class文件。
 *
 */
class Build {

    Person p1 = new Person(1);

    public Build() {
        System.out.println("这是Build类！");
        Person p2 = new Person(2);

        System.out.println(Person.t);
    }

    Person p3 = new Person(3);
}

//class Lomo {
//
//    public Lomo(String name) {
//        System.out.println("NAME: " + name);
//    }
//}